import { plugin, Messagetype } from 'alemon'
import axios from 'axios'
import { mkdirSync, writeFileSync } from 'node:fs'
import { dirname, join } from 'node:path'
import imageSize from '../../lib/imageSize.js'
export class K_原神壁纸 extends plugin {
  constructor() {
    super({
      dsc: '原神壁纸',
      rule: [
        {
          reg: '^/原神壁纸$',
          fnc: '原神壁纸'
        }
      ]
    })
  }
  async 原神壁纸(e: Messagetype) {
    // arraybuffer 获取文件流 这里图片太大可能会很慢
    const res = await axios
      .get('https://api.dujin.org/pic/yuanshen/', { responseType: 'arraybuffer' })
      .catch(err => err)

    if (!res) {
      return
    }

    // // 原图地址
    // const img = res.request.protocol + '//' + res.request.host + res.request.path;
    // console.log('[原神壁纸]: ' + img);

    // 获取图片类型
    const type = res.headers['content-type']
    // 生成图片位置
    let imgPath = join(process.cwd(), '/data/alemon-plugin-kong/原神壁纸/bz')
    // 判断图片类型添加后缀名
    if (type === 'image/png') {
      imgPath += '.png'
    } else if (type === 'image/gif') {
      // 不支持压缩gif
      await e.sendImage(res.request.protocol + '//' + res.request.host + res.request.path)
      return true
    } else {
      imgPath += '.jpg'
    }

    // 创建文件夹
    mkdirSync(dirname(imgPath), { recursive: true })

    // 下载图片
    writeFileSync(imgPath, res.data)

    // 获取图片大小
    const contentLength = res.headers['content-length']
    // 图片超过1mb压缩
    if (contentLength / 1024 > 1024) {
      const out = await imageSize(imgPath, imgPath)
      if (!out) {
        return false
      }
    }
    await e.sendImage(imgPath)
    return true
  }
}
